package com.qf.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;

/**
 * 演示请求转发和重定向
 * @author 千锋健哥
 */
@Controller
@RequestMapping("/jump")
public class JumpController {

    /**
     * 模拟这是一个查询列表方法
     * @return
     */
    @RequestMapping("/test1")
    public String test1(String t1, HttpServletRequest request) {
        System.out.println("============模拟这是一个查询列表方法=========");
        //通过重定向方式取model中的数据
        System.out.println("====跳转携带的参数数据t1===" + t1);
        //通过请求转发方式从model模型中获取数据
        System.out.println("====request.getAttribute t1====" + request.getAttribute("t1"));
        //通过重定向方式取model中的数据
        System.out.println("====request.getParameter t1====" + request.getParameter("t1"));
        return "hello";
    }

    /**
     * 模拟这是一个添加方法, 添加后请求转发, 跳转到列表方法
     * 请求转发规范:
     * 返回 forward:请求转发的路径
     * @return
     */
    @RequestMapping("/add")
    public String add(Model model) {
        System.out.println("=========这是一个添加方法============");
        //向model模型中放入数据, 这个model中的数据可以带到页面, 也可以带到转发后的方法中
        model.addAttribute("t1", "测试重定向携带数据");
        return "forward:/jump/test1";
    }

    /**
     * 模拟这是一个修改方法, 修改后重定向, 跳转到列表方法
     * 请求转发规范:
     * 返回 redirect:重定向的路径
     * @return
     */
    @RequestMapping("/update")
    public String update(Model model) {
        System.out.println("=========这是一个修改方法============");
        //向model模型中放入数据, 这个model中的数据可以带到页面, 也可以带到转发后的方法中
        model.addAttribute("t1", "测试请求转发携带数据");

        //跳转到内部路径
        return "redirect:/jump/test1";
        //跳转到外部网站
        //return "redirect:https://www.baidu.com/";
    }
}
